# Info Cheatsheet

Most of GNU manuals are distributed in the info format, you usually type `info` in the command line on unix systems to open an info reader.

The two primary info readers are 'info', which is a single program designed to read info files and the emacs package 'info' whose purpose is the same.

Info files are organized in nodes that describe a topic at a specific level of detail. You can move inside info nodes using commands, some nodes may fill the entire screen with text but they don't end at the last line. You can also move between screens.

When using info, certain keys and key combinations are commands. These are all the commands and what they do inside an info reader.

## Basic info commands

| Key/Chord | Action |
| --- | ------ |
|  `h`  | Enter info usage tutorial |
|  `?`  | Show a summary of all available commands (Emacs info) |
|  `H`  | Show a summary of all available commands (Stand-alone info) |
| `<SPC>` | Move foward to the next screenful, jumps to the next node regardless of level |
| `<DEL>` | Move backward to the previous screenful (Stand-alone info) |
| `S-<SPC>` | Move backward to the previous screenful (Graphical Emacs info) |
| `n` | Move foward to the next node |
| `p` | Move backward to the previous node |
| `b` | Move to the beginning of the current node |
| `e` | Move to the end of the current node |
| `<CTRL>-L` | Display node again and cicle through screenful recentering position |
| `]` | Move to the next node on the next level, when a node has menus |
| `[` | Move to the previous node on the previous level, when the node has menus |
| `<` | Go to the 'Top' node of this file |
| `>` | Go to the final node in this file |
| `m` | Go directly to one of the subnodes, it prompts for you to type the subtopic name, usually shown in a menu |
| `u` | Go 'Up' to the node you just came from (one node up in the tree), leading you back to the menu |
| `^` | Same as 'u', go 'Up' a node from you just came from |
| `<CTRL>-G` | Cancel the current operation, available when the prompt is expecting some input |
| `<TAB>` | Move to menu subtopic lines and move to the next menu item on each <TAB> press |
| `M-<TAB>` | Move backwards between menu subtopic items (<Shift>-<TAB> on Emacs info) |
| `<CTRL>-M-i | Move the cursor to previous cross-reference or menu subtopic items |
| `<RET>` | Go to the currently selected subtopic menu item, descending one node in the tree. Also you can follow a selected cross reference |
| `l` | Move back in history to the last node you were at |
| `f` | Follow a cross reference by specifying the name, this will also suggest the nearest cross reference |
| `f?` | List all the cross references in the current node |
| `i` | Search the index for a given topic and takes you to the node which is listed in the indes for that topic |
| `,` | Move to the next match from a previous 'i' command |
| `r` | Revisit nodes in the history list in foward direction, so 'r' returns you to the node you came from |
| `L` | Creates a virtual node that contains a list of all the nodes you visited, you can select a node from this menu to visit it |
| `T` | Go to the table of contents of the current Info file |
| `d` | Opens the directory node. This node is the first you see when you enter info |
| `t` | Moves to the 'Top' node of the current manual, usually where the intro is |
| `q` | This takes you out of info, no matter in which node you are |


## Advanced Info Commands

These commands are focused mostly on searching and finding something quickly, using the manual as a reference rather than as a tutorial. This includes searching text in a manual, searching the index of a manual, chosing a menu subtopic by its number, create an info buffer in emacs and the emacs info variables to modify the behavior of Emacs Info.

| Key/Chord | Action |
| --- | ------ |
| `<CTRL>-q` | Quotes the next character so it is entered literally, this is usually done when you are searching |
| `s` | Allows you to search a whole Info file for a string, this switches to the node if necessary. Type 's' and '<RET>' again to search the same string again |
| `S` | Search through this Info file for  the specified regexp case-sensitively |
| `<CTRL>-s` | Start incremental search foward (Emacs and Standalone Info), and type '<RET>' to stop. Type the same sequence to repeat the search |
| `<CTRL>-M-s` | Use Isearch to search through multiple Info nodes |
| `<CTRL>-r` | Start incremental search backwards, same sequence as foward to stop and repeat the search through multiple info nodes |
| `I` | Search the index for a string and construct a virtual info node with the results of the index search making easier to select |
| `g` | Go to a node by its name. For example 'gTop<RET>' will take you to the Top node in this file. You can also specify the node and the file: 'g(emacs)Top<RET>' will take you to the Top node in the emacs file |
| `0..9` | Choose a menu subtopic by its number, 0 goes to through the last menu item. Menu items with colored * are odd entries |
| `M-n` | When using emacs, select a new independent Info buffer in a new window |
| `C-u m` | When using emacs, creates a new independent Info buffer visiting the subnode in the menu, prompts you typ type the subtopic |
| `C-u g` | When using emacs, creates a new independent Info buffer visiting the subnode by its name, prompts you to type the name |
| `C-u C-h i` | Move to the new Info file with completion |
| `C-u <number> C-h i` | Switch to the info buffer with the given <number>, creating it if does not exist |
| `M-x info-display-manual` | Show an Info manual by name |
| `M-x info-apropos` | Look for a string in the indices of all manuals |